package com.ruge.test.springMVC.shiro;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Assert;
import org.junit.Test;

/**
 * 创建人 ：爱丽丝、如歌
 * 创建时间 ：2018-07-02  22:20
 * 描述 ：
 */
public class demo01_02_IniRealm测试 {
    @Test
    public void test() {

        IniRealm iniRealm = new IniRealm("classpath:test/shiro/shiro.ini");
        /**
         *  1 使用Ini配置文件初始化SecurityManager
         */
        DefaultSecurityManager securityManager = new DefaultSecurityManager();
        securityManager.setRealm(iniRealm);
        /**
         *  2 得到SecurityManager实例 并绑定给SecurityUtils
         */
        SecurityUtils.setSecurityManager(securityManager);
        /**
         *  3 得到Subject及创建用户名/密码身份验证Token（即用户身份/凭证）
         */
        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("zhang", "123");
        /**
         *  4 登录，即身份验证
         */
        try {
            subject.login(usernamePasswordToken);
        } catch (Exception e) {
            /**
             *  5 登录失败
             */
        }
        /**
         *  6 断言用户已经登录
         */
        Assert.assertEquals(true, subject.isAuthenticated());

        /**
         *  7 退出
         */
        subject.logout();
    }
}
